約 4,275,750 件
https://w.atwiki.jp/abwiki/pages/659.html
Tiny BASICと呼ぶ処理系は2つあり、Tiny Basic for Windowsは Windows上で動作するBASICインタプリタ。 単にTiny BASICと呼ぶBASICは古い時代に製作された整数BASICインタプリタで 2KB程度のコードで実装された実験的なBASICを指すこともある。 (以下、Tiny Basic for Windowsについて説明する) Tiny Basicはインタプリタとして設計されている。 十進BASICがANSI互換を準拠している一方、Tiny BasicはMicrosoft系BASICを 拡張した仕様を採用する。 ダイレクトモードと編集ウインドウを持ち、ヘルプ機能を充実しており 初心者が扱いやすく拡張された構造化構文をサポートする。 インタプリタ処理なので実行時コンパイルは必要がなくその場でプログラム コードを実行できる。 N88互換BASIC for Windows95や、99BASIC等と比較してインタプリタ実行速度 は速く、BASIC系インタプリタ中では一番の速度を持つ。
https://w.atwiki.jp/abwiki/pages/2.html
STR$( - ) 目次 トップページ 基本 応用 リファレンス AB以外の開発環境 便利ツール ABによる生成物集積所 FAQ N88BASIC 2ch過去ログ Win32プログラミング講座 for AB4.24 ABによるアルゴリズム事典 検索 リンク 公式 ActiveBasic Web Ring "ACBAS" 2ch 会議所 投票 更新履歴 取得中です。 ここを編集
https://w.atwiki.jp/abwiki/pages/99.html
FAQ(Frequently Asked Questions)よくある質問と答え 全般的なこと Q どこからダウンロードできるの? |A 公式サイトが死んでいる場合は vector からでも。 Q 利用にお金はかかりますか? |A いいえ。ABは無料です。 Q 商用利用してもいいの? |A 誰も止めはしない。 Q 関数や命令、文法の仕様は無いの? |A すべて作者の頭の中に入っていますよ。 Q ActiveBasicはActiveBasicで作ってるの? |A CかC++で作っているらしい。 Q ActiveBasicのプログラミングコンテスト無いの? |A RADツールに関すること Q RADツールで[x]の無いウインドウをテストしたのですが…閉じ方が分かりません。 |A Alt+F4で閉じることができます。 Q タブストップが効かない。 |A プロジェクト名.abpのメッセージループにIsDialogMessage()を追加します。 #include "プロジェクト名.idx" --------------------------- Window Message Loop --------------------------- Dim msgMain As MSG, iResult As Long Do iResult=GetMessage(msgMain,0,0,0) If iResult=0 or iResult=-1 Then Exit Do If IsDialogMessage(hMainWnd, msgMain) = 0 Then これが大事 TranslateMessage(msgMain) DispatchMessage(msgMain) End If これも忘れずに Loop Call destructores and exit process End Q モードレスダイアログが表示されない |A モードレスダイアログのフォームのプロパティの可視のチェックを入れるか ShowWindowでも使ってあげてください。 Q イメージボックスにjpegは貼れないの? |A できません。 Q リッチエディット、タブとかのコントロールは使えないの? |A CreateWindowEx()してください。 プログラムに関すること Q 関数から複数の値を返すことはできるか。 |A 値を格納する領域をいくつか起動する側で用意して、それらの領域を 指すポインターを引数として渡し、関数にポインターの先に値を埋め てもらう。 あるいは、関数の戻り値を構造体にして、その構造体に希 望の値を設定してもらう。あるいは(最後の最後の手として)global変 数を使うことを考える。 Q 「ハンガリー記法(Hungarian Notation)」とは。使う価値があるか。 |A ハンガリー記法には大きく分けてアプリケーションハンガリアン記法とシステムハンガリアン記法があり、Charles Simonyiが発明したのはアプリケーションハンガリアン記法の方であるが、 論文に「型の意味」と言う意味で「type」と言う単語を使ったため、Microsoft社のExcel開発グループとWord開発グループ以外の殆ど全ての開発チームで誤解が生じ、今に至る。 詳細はhttp //ja.wikipedia.org/wiki/%E3%83%8F%E3%83%B3%E3%82%AC%E3%83%AA%E3%82%A2%E3%83%B3%E8%A8%98%E6%B3%95に詳しい。 ハンガリアン記法とは変数名に接頭辞をつける記法の事で、システムハンガリアン記法では、例えばdouble型の変数にはdblという接頭辞が付く。 一方アプリケーションハンガリアン記法では、例えばHTML出力可能なようにエンコードが済んであるゼロ終端ASCII文字へのポインタにはspszという接頭辞が付く。 アプリケーションハンガリアン記法は使う価値が高い可能性が高い(用途にもよるだろうが)。 Q 多次元の配列を動的に割り付けるのはどうしたらよいか? |A たいていポインターの配列を割り付けて、それぞれのポインターを動 的に割り付けた"列"に初期化するのが一番の解決策である。以下に 2 次元配列の例を挙げる。 Const nrows = 5 Const ncolumns = 6 Dim i As Long, array1 As **Long array1 = malloc(nrows * SizeOf(*Long)) For i=0 To nrows-1 array1[i] = malloc(ncolumns * SizeOf(Long)) Next Q コンパイルは通るのに実行すると落ちる。なんで? |A 1.配列の添字がオーバーしている 2.ヌルポインタにアクセスしている 3.RaiseException(),DebugBreak()などが呼ばれている などなど。 Q 四捨五入するプログラムを教えてください。 |A 次のようにするの。ただし負の値だと上手くいかない。符号をひっくり返して。 Dim aaaa As Double, bbbb As Double aaaa=5.4 bbbb=Int(aaaa+0.5) Q ポインターは本当に配列よりも高速なのか。関数呼び出しをするとど れだけ遅くなるのか。++iはi=i+1よりも高速か。 |A はい ※インテルのコンパイラーを使ってる人はポインタより配列を使うようにしましょう。 Q さて問題です。どうやれば出力として、自分自身のソースコードを産 み出すコードをどうやったら書けるか。 |A 10 LIST RUN Q 円周率の値が欲しい |A function.sbpの中の_System_PIで定義されています。 Q ヌルポインタってなんですか? |A ポインタに0を代入したものです。 Q ABはWin32APIを使わないと何も出来ないんですか? |A いいえ。 Q 関数の戻り値に構造体を指定できないの? |A できません。 Q 変数が実数型か整数型かを知る方法は? |A オーバーロード(多重定義)を使いましょう。 #N88BASIC Function f(a As Long) As Long Print "整数型です。" End Function Function f(a As Double) As Long Print "実数型です。" End Function Dim a As Long Dim b As Double f(a) f(b) Q 「KILLがしたい」が人間の本能なのですか? |A そうであるとも言えるし、そうでないかもしれません。 Q MIDIを再生する方法を教えてください。CDを再生する方法を教えてください。 |A MCIを使えばいいのでは? Q Win32APIって何? |A Windowsのが提供する機能の総称です。 Q open命令でエラーを判定できないの? |A open命令はWin2APIのCreateFile関数を呼び出しているだけなので、 直後にGetLastError()を使うとエラーコードを得られるはず。 Q 複素数は使えないの? |A 自分で用意するしかないです。 Type COMPLEX r As Double i As Double End Type 複素数加算 a+b=c Sub AddComp(ByRef a As COMPLEX,ByRef b As COMPLEX, ByRef c As COMPLEX) c.r=a.r+b.r c.i=a.i+b.i End Sub 複素数乗算 a*b=c Sub MulComp(Byef a As COMPLEX,ByRef b As COMPLEX, ByRef c As COMPLEX) c.r=a.r*b.r-a.i*b.i c.i=a.i*b.r+a.r*b.i End Sub #N88BASIC Dim A As COMPLEX Dim B As COMPLEX Dim C As COMPLEX Dim D As COMPLEX Input "A "; A.r, A.i Input "B "; B.r, B.i AddComp(A,B,C) MulComp(A,B,D) Print C.r, C.i Q 二重起動を抑止するには? |A ミューテックスを使うのが一般的かと。 宣言部 Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" ( _ pSAttr As Long, fOwner As Long, sMutexName As *Byte) As Long Declare Function ReleaseMutex Lib "kernel32" (hMutex As Long) As Long Const MutexName = "ともちん" Const ERROR_ALREADY_EXISTS = 183 Dim mutex As DWord 起動時Createイベントなど mutex = CreateMutex(0, 0, MutexName) If mutex = ERROR_ALREADY_EXISTS Then MessageBox(0, "多重起動", 0, 0) ExitProcess(0) End If 終了時Destroyイベントなど ReleaseMutex(mutex) Q 独自のメッセージを作成するには? |A WM_APPを使って独自メッセージを定義します。 WM_USERを使えと書いている説明は信じないように。 Const MyMessage = (WM_APP+1) SendMessage(hMainWnd, MyMessage, 0, 0) Q "new"と"malloc"の違いは何ですか |A newはオブジェクトの生成のみに使います。 mallocはその他のものに使います。
https://w.atwiki.jp/abwiki/pages/16.html
ActiveBasicの仕様、命令、関数のリファレンス ※書き方 I.標準関数 データ型変換関数 CDbl CInt CSng ポインタ関連の関数 GetDouble GetSingle GetDWord GetWord GetByte StrPtr 数学関数 Abs Atn Cos Exp Fix Int Log Rnd Sgn Sin Sqr Tan HIBYTE HIWORD LOBYTE LOWORD MAKELONG MAKEWORD 文字列関数 Asc Chr$ Date$ Hex$ Inkey$ Input$ InStr Left$ Len MakeStr Mid$ Oct$ Right$ Space$ Str$ String$ Time$ Val ZeroString ファイル関連の関数 _splitpath Eof Loc Lof メモリ関連の関数 malloc, calloc, realloc, free その他の関数 AddressOf ELM RGB SizeOf VarPtr サポート関数(非標準) ldexp frexp ipow pow rand srand II.命令 入出力命令 Open Close Print Write Input Field Get Put グラフィックス命令(N88) Cls Circle Line Pset Paint ウインドウ操作命令 Window DelWnd MsgBox その他命令 Beep ChDir Color Debug End Exec Kill Locate MkDir Randomize III.構文 If Goto GoSub~Return For~Next While~Wend Do~Loop Select Case Declare Sub Function Macro Dim Const Enum Let Set〇〇 Type TypeDef With Class~End Class IV.Win32API MCI GDI user32 V.仕様、ヨタ話 基本型 宣言と定義 コマンドライン オプション 行番号 コメント プリプロセッサ 複文 アスキーコード表 バグ、不具合 N88BASICとの互換性 歴史 演算子については基本的な演算子には何があって、どう使うの?を参照のこと。 Win32APIは MSDNライブラリ が詳しい。
https://w.atwiki.jp/abwiki/pages/172.html
アルゴリズム事典のacker.cからの移植です。 ActiveBasic? 4.24.00で動作確認。 /***********************************************************acker.c -- Ackermann (アッカーマン) 関数***********************************************************/#define TEST#ifdef TESTDim count As Long#endifFunction A(x As Long, y As Long) As Long#ifdef TESTcount++#endifIf x = 0 ThenA = y + 1Exit FunctionEnd IfIf y = 0 ThenA = A(x - 1, 1)Exit FunctionEnd IfA = A(x - 1, A(x, y - 1))End Function'テストコード#consolePrint "A(3,3)" + Str$(A(3, 3)) + Ex"?n"#ifdef TESTPrint "A(x, y) は" + Str$(count) + Ex"回呼び出されました.?n"#endifSleep(10000)
https://w.atwiki.jp/abwiki/pages/170.html
「C言語による最新アルゴリズム事典」より整数の積を移植しました。 ActiveBasic 4.24.00 動作確認済み 整数 /******************************************************* multiply.abp -- 整数の積********************************************************/#consoleFunction Multiply(a As Long, b As Long) As Long While a 0 If a and 1 Then Multiply += b End If b = 1 a = 1 WendEnd FunctionDim x As LongDim y As LongInput "x = ", xInput "y = ", yPrint "Multiply(x, y) = " ; Multiply(x, y)End
https://w.atwiki.jp/abwiki/pages/335.html
呼出規約(よびだし-きやく)とは、関数を呼び出すときの約束事のこと。 引数をどのような順番でスタックに入れるか、 また関数から返るときスタックの後片付けをどうするのかを決めている。 代表的な呼出規約にはcdecl(しーでくる)、stdcall(すたどこーる)、fastcall(ふぁーすとこーる)などがある。 ActiveBasicでは自前で作った関数は例外なくstdcallになる。(Ver5からはcdeclも使えるらしい。) Declareで宣言したDLL関数は規定ではstdcallになるが、CDECLを明記することでcdeclの関数も使える。 stdcall 引数は左から右にスタックに積まれる。スタックの掃除は関数側で行う。 cdecl 引数は右から左にスタックに積まれる。スタックの掃除は呼び出し側が行う。
https://w.atwiki.jp/abwiki/pages/171.html
アルゴリズム事典のarea.cからの移植です。ABの場合、変数の型を特に注意すべきです。 ActiveBasic 4.24.00で動作確認。 /***********************************************************area.c -- 面積***********************************************************/Function area(n As Long, x As *Double, y As *Double) As DoubleDim i As LongDim a As Doublea = x[n - 1] * y[0] - x[0] * y[n - 1]For i = 1 To n - 1a += x[i - 1] * y[i] - x[i] * y[i - 1]Nextarea = 0.5 * aEnd Function'テストコード#consoleDim x[3] As Doublex[0] = 1x[1] = 4x[2] = 2x[3] = 0Dim y[3] As Doubley[0] = 1y[1] = 2y[2] = 4y[3] = 2Print area(4, x, y)Sleep(1000)
https://w.atwiki.jp/abwiki/pages/219.html
AB5のプロジェクトファイル(*pj)はAB4で開くと プロジェクト ファイルが壊れています と怒られてしまう。 こんな時はプロジェクトファイルの修正が必要。 プロジェクトファイルをメモ帳で開く。 ' ActiveBasic Project file.#VERSION=10#MODULETYPE=0#NAME=clock#PLATFORM=32#USEWINDOW=1#OPTION= H00010000#OUTPUT_RELEASE=.\clock.exe#OUTPUT_DEBUG=.\clock_debug.exe#DEBUG_CMD_LINE=#DEBUG_EXE_PATH=#RESOURCE=0#SOURCEclock.abpMainWnd.sbp この中にある、 #DEBUG_CMD_LINE= #DEBUG_EXE_PATH= この2つを削除すればok
https://w.atwiki.jp/abwiki/pages/406.html
COBOLとは? COBOL(こぼる)とは、最初期に誕生したプログラム言語である。 先に誕生したFORTRAN(フォートラン)が数式をそのままプログラムできる科学技術用途であったのに対し、 COBOLは事務処理に特化した言語として誕生した。 現在もCOBOL手を変え品を変え世界の金融を支配し続けている。 COBOLはその後AdaやActiveBasic、Brainfuckといった新しい言語によるパラダイムの変化にも頑強に抵抗し続けている。 それはCOBOLの仕様が優れている証左である。 COBOLを使う人をコボラーと呼ぶ。 主なCOBOLの使い手としてはSKE48の 松井玲奈 が有名。